package single.demo07;

/**
 * 静态内部类
 * 这种方式采用了类装载的机制来保证初始化实例时只有一个线程。
 * 静态内部类方式在Single类被装载时并不会立即初始化，而是在需要实例化时，调用getInstance方法，才会装载Single类，从而完成Single实例化。
 * 类的静态属性只会在第一次加载类的时候初始化，所以在这里JVM帮助我们保存了线程的安全性，在类进行初始化时，别的线程是无法进入的。
 *
 * 避免了线程不安全，利用静态内部类特点实现延迟加载，效率高
 *
 * 推荐使用
 *
 */
public class Demo07 {




}

class Single{
    private Single(){}

    private static class SingleInstance{
        private static final Single INSTANCE = new  Single();
    }

    private static Single getInstance(){
        return SingleInstance.INSTANCE;
    }
}